//package com.zmn.plat.dubbo.impl.area;
//
//import java.util.Objects;
//
//import javax.annotation.Resource;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang.StringUtils;
//import org.apache.dubbo.config.annotation.Service;
//import org.jetbrains.annotations.NotNull;
//import org.springframework.cache.annotation.Cacheable;
//
//import com.zmn.common.constant.GlobalConsts;
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.manager.common.database.annotation.ReadOnlyConnection;
//import com.zmn.plat.common.dto.area.BaseMobileCityDRO;
//import com.zmn.plat.dubbo.interfaces.area.BaseMobileCityListRemoteService;
//import com.zmn.plat.dubbo.utils.DubboConsts;
//import com.zmn.plat.manager.impl.cache.AreaCacheImpl;
//import com.zmn.plat.model.entity.area.BaseMobileCity;
//
///**
// * @author duanzuocai
// * @version v1.0
// * @since 2019/2/19 15:53
// */
//@Slf4j
//@Service(version = DubboConsts.INTERFACE_VERSION, validation = "true")
//public class BaseMobileCityListRemoteServiceImpl implements BaseMobileCityListRemoteService {
//
//    @Resource
//    AreaCacheImpl areaCache;
//
//    @Override
//    @ReadOnlyConnection
//    @Cacheable(key = "'dubbo:list:city:mobile:'+#p0", cacheNames = "redis1d")
//    public ResponseDTO<BaseMobileCityDRO> getCityByMobile(String contact) {
//
//        if (StringUtils.isEmpty(contact)) {
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//        try {
//            BaseMobileCity city = areaCache.findByMobile(this.getContact(contact));
//            if (Objects.isNull(city)) {
//                return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//            }
//            return ResponseDTO.success(this.getBaseMobileCityDRO(city), GlobalConsts.SUCCESS_MSG);
//        } catch (Exception e) {
//            log.error(GlobalConsts.FAILD_MSG + "e:{},msg:{}", e, e.getMessage());
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//    }
//
//    @Override
//    @ReadOnlyConnection
//    @Cacheable(key = "'dubbo:list:areacode:city:'+#p0", cacheNames = "redis1d")
//    public ResponseDTO<String> getTelAreaCodeByCityId(Integer cityId) {
//        try {
//            return ResponseDTO.success(areaCache.findByCity(cityId), GlobalConsts.SUCCESS_MSG);
//        } catch (Exception e) {
//            log.error(GlobalConsts.FAILD_MSG + "e:{},msg:{}", e, e.getMessage());
//            return ResponseDTO.fail(GlobalConsts.FAILD_MSG);
//        }
//    }
//
//    /**
//     * 获取坐机区号、手机号前8位
//     *
//     * @param contact
//     * @return
//     */
//    @NotNull
//    private String getContact(String contact) {
//        if (contact.startsWith(TEL_BEIJIN)) {
//            return TEL_BEIJIN;
//        } else if (contact.startsWith(TEL_HONGKONG)) {
//            return TEL_HONGKONG;
//        } else if (contact.startsWith(TEL_AOMEN)) {
//            return TEL_AOMEN;
//        } else if (contact.startsWith(PROVINCE_CAPITAL) && contact.length() >= 3) {
//            return contact.substring(0, 3);
//        } else if (contact.startsWith(TEL) && contact.length() >= 4) {
//            return contact.substring(0, 4);
//        } else if (contact.startsWith(MOBILE) && contact.length() >= 7) {
//            return contact.substring(0, 7);
//        }
//
//        return contact;
//    }
//
//    @NotNull
//    private BaseMobileCityDRO getBaseMobileCityDRO(BaseMobileCity city) {
//        BaseMobileCityDRO dro = new BaseMobileCityDRO();
//        dro.setCarrier(city.getCarrier());
//        dro.setCityId(city.getCityId());
//        dro.setCityName(city.getCityName());
//        dro.setMobileNumber(city.getMobileNumber());
//        dro.setProvinceName(city.getProvinceName());
//        dro.setTelCode(city.getTelCode());
//        return dro;
//    }
//}
